////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef _EVENT_RECEIVER_H_
#define _EVENT_RECEIVER_H_

////////////////////////////////////////////////////////////////////////////////////////////////////

#include "CGlobals.h"
#include "IEventReceiver.h"

#include "vector3d.h"
#include "IrrArray.h"

////////////////////////////////////////////////////////////////////////////////////////////////////

class IControl;

////////////////////////////////////////////////////////////////////////////////////////////////////

class CEventReceiver : public IEventReceiver
{
public:
	CEventReceiver();
	
	virtual bool OnEvent(const SEvent& event);
	virtual bool IsKeyDown(EKEY_CODE keyCode) const
	{
		return KeyIsDown[keyCode];
	}
	void GrabAllEvents (IControl* control);
	void ReleaseGrab (IControl* control);

	void AddControl (IControl* control);
	void RemoveControl (IControl* control);
	void RemoveAllControls ();

	void DrawControls ();
	void UpdateControls( vector3df size);
private:
	bool KeyIsDown[KEY_KEY_CODES_COUNT];
	irr::core::array<IControl*> m_controls;
	IControl* m_grabbed;
};

#endif
////////////////////////////////////////////////////////////////////////////////////////////////////
